package javase2.day06.demo09;

/*
线程安全问题：
    卖票问题:会产生多个线程卖同一张票的bug:
            Thread-0正在卖第100张票
            Thread-2正在卖第100张票
            Thread-2正在卖第-1张票        这里还出现了不存在的票
         解决卖票的多线程问题方案三：Lock锁
            Lock实现提供了比synchronized更广泛的锁定操作
            Lock接口中的方法：
                lock();获取锁
                unlock();释放锁
        使用步骤：
            1.在成员位置创建ReentrantLock对象
            2.在可能出现安全问题的代码前调用lock()方法获取锁
            3.在可能出现安全问题的代码前调用unlock()方法释放锁
 */
public class Demo01Ticket {
    public static void main(String[] args) {
        RunnableImpl runnable = new RunnableImpl();
        Thread thread1 = new Thread(runnable);
        Thread thread2 = new Thread(runnable);
        Thread thread3 = new Thread(runnable);
        thread1.start();
        thread2.start();
        thread3.start();
    }
}
